/**********************************************************************
 * Oscloscopio USB - Proyecto de fin de carrera 2005 - Universidad ORT
 *
 *                  Pablo Hoffman - Martin Szmulewicz
 * --------------------------------------------------------------------
 *
 * Rutinas para la instalacion y atencion de interrupciones
 *
 **********************************************************************/

/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
#include <timers.h>
#include "typedefs.h"
#include "interrupt.h"
#include "osc_io.h"

/** I N T E R R U P T  V E C T O R S *****************************************/

//#pragma code high_vector=0x08
//void interrupt_at_high_vector(void)
//{
//    _asm goto cntfull_isr _endasm
//}
//#pragma code low_vector=0x18
//void interrupt_at_low_vector(void)
//{
//    _asm goto tmr_isr _endasm
//}
//#pragma code

/** V A R I A B L E S ********************************************************/

volatile BOOL cntfull = FALSE;

#pragma interruptlow tmr_isr
void tmr_isr(void) {
    INTCONbits.TMR0IF = 0;
    //cntCKLO = !cntCKLO;
}

#pragma interrupt cntfull_isr
void cntfull_isr(void) {
	INTCON3bits.INT2IF = 0;
	cntStop();
    cntfull = TRUE;
}

// Returns true when the counter is full
BOOL cntIsFull(void) {
	if (cntfull == TRUE) {
		cntfull = FALSE;
		return TRUE;
	} else {
		return FALSE;
	}
}

// Inicializa las interrupciones del osciloscopio 
//void InitializeInterrupts(void) {
//    RCONbits.IPEN = 1;           // habilito varios niveles de interrupcion
//
//    INTCON2bits.INTEDG2 = 0;     // interrupcion por flanco de bajada
//	INTCON3bits.INT2IP = 1;      // prioridad alta para RB2
//	INTCON3bits.INT2IE = 1;      // habilito interrupcion en RB2
//	INTCONbits.GIEH = 1;         // habilito interrupciones globales de prioridad alta (cntfull)
//
//    OpenTimer0(TIMER_INT_ON & T0_SOURCE_INT & T0_16BIT);
//    INTCON2bits.TMR0IP = 0;      // prioridad baja para interrupcion timer0
//	INTCONbits.GIEL = 1;         // habilito interrupciones globales de prioridad baja (timer)
//
//}

/** EOF interrupt.c **********************************************************/
